from langchain_core.prompts import ChatPromptTemplate, ChatMessagePromptTemplate
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv
from pydantic import SecretStr


# 加载.env文件中的环境变量
load_dotenv()

llm = ChatOpenAI(
    model="qwen-flash",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key=SecretStr(os.getenv("DASHSCOPE_API_KEY")),
    streaming=True
)

# 系统消息模板
system_message_template = ChatMessagePromptTemplate.from_template(
    template="你是一位{role}专家, 擅长解决{domain}领域的问题",
    role="system"
)
# 用户消息模板
human_message_template = ChatMessagePromptTemplate.from_template(
    template="用户的问题:{question}",
    role="user"
)
# 创建提示词模板
chat_prompt_template = ChatPromptTemplate.from_messages([
    system_message_template,
    human_message_template
])
# 模板 -> 提示词
prompt = chat_prompt_template.format_messages(
    role="Python编程",
    domain="AI-agent开发",
    question="如何创建一个简单的智能体?")
# 输入给AI模型, 获取结果
resp = llm.stream(prompt)
for chunk in resp:
    print(chunk.content, end="")
